// Copyright 2022 a.o.smith ALL Rights Reserved
package com.liuxinlong.modules.chimi.service;

import com.liuxinlong.modules.entity.BarLuck;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * 论坛活动管理服务层接口
 *
 * @author liuxinlong@hotwater.com.cn
 * @version 1.0.0
 * @since 2022-08-08
 */
public interface BarLuckService {
    /**
     * 分页查询活动信息
     *
     * @param queryParam 请求信息
     * @return 活动信息列表
     */
    List<Map<String, Object>> pageLuck(Map<String, Object> queryParam);

    /**
     * 查询活动总数
     *
     * @param queryParam 请求信息
     * @return 活动总数
     */
    int getLuckCount(Map<String, Object> queryParam);

    /**
     * 新增论坛活动
     *
     * @param barLuck 论坛活动
     */
    void addLuck(BarLuck barLuck);

    /**
     * 更新论坛活动
     *
     * @param barLuck 论坛活动
     */
    void updateLuck(BarLuck barLuck);

    /**
     * 删除论坛活动
     *
     * @param id 活动id
     */
    void deleteLuck(String id);

    /**
     * 修改论坛活动活动状态
     *
     * @param id 礼品id
     */
    void updateLuckStatus(String id);

    /**
     * 复制活动信息
     *
     * @param barLuck 活动基本信息
     * @param subInfo 附属信息
     */
    void copyLuck(BarLuck barLuck, String subInfo);

    /**
     * 导出活动信息
     *
     * @param response response
     */
    void exportLuckInfo(HttpServletResponse response);

    /**
     * 用户抽奖
     *
     * @return 抽奖结果
     */
    Map<String, Object> startLottery(String luckId);

    /**
     * 分页查询活动参与记录信息
     *
     * @param queryParam 请求信息
     * @return 活动参与记录信息列表
     */
    List<Map<String, Object>> pageLuckFlow(Map<String, Object> queryParam);

    /**
     * 查询活动参与记录总数
     *
     * @param queryParam 请求信息
     * @return 活动参与记录总数
     */
    int getLuckFlowCount(Map<String, Object> queryParam);
}
